[bits 64]

global task_switch
task_switch:
    ; 调用过程需要保护的寄存器
    push rbp
	mov	rbp, rsp
    push rbx
    push r12
    push r13
    push r14
    push r15

    mov rax, rsp
    and rax, 0xfffffffffffff000
    mov [rax], rsp
    mov rax, rdi
    mov rsp, [rax]

    ; 恢复保存的寄存器
    pop r15
    pop r14
    pop r13
    pop r12
    pop rbx
    pop rbp
    ret
